const router = require('koa-router')()

// 模拟数据，当数据库连接不可用时使用
const mockBlogData = [
    {
        blogId: 1,
        title: '路·过-喜欢在路上',
        blogContent: '注定，有些路，只能一个人走；有些事，只能一个人扛。因为我喜欢在路上！走在林间小道上，一个人，晃晃悠悠，无所适从，看着那些在风中微微呻吟着的落叶，远远望去，像一群疲惫的蝴蝶，挣扎着，坚持着，只为最后的那一点挣扎。\n\n在路上，我看到了很多风景，也遇到了很多人。有些人，只是擦肩而过；有些人，却成为了生命中的过客。无论如何，我都感谢他们，因为他们让我的旅程更加丰富多彩。\n\n喜欢在路上的感觉，喜欢那种自由自在，无拘无束的感觉。在路上，我可以忘记一切烦恼，只专注于眼前的风景。在路上，我可以思考人生，思考未来。\n\n也许，这就是我想要的生活。没有太多的束缚，没有太多的压力，只有自由和快乐。我喜欢在路上，我会一直走下去。',
        createTime: '2023-08-19 10:00:00',
        views: 101
    },
    {
        blogId: 2,
        title: '我的编程之旅',
        blogContent: '从接触编程的第一天起，我就深深爱上了这个神奇的世界。代码的魅力在于，它可以将你的想法变成现实，让计算机按照你的指令去完成各种任务。\n\n编程的道路并不平坦，充满了挑战和困难。但是，正是这些挑战和困难，让我不断成长和进步。每当解决一个难题，那种成就感是无法用言语来形容的。\n\n我相信，只要坚持下去，总有一天，我会成为一名优秀的程序员。我会继续努力，不断学习，不断进步。',
        createTime: '2023-08-20 14:30:00',
        views: 56
    },
    {
        blogId: 3,
        title: '生活中的小确幸',
        blogContent: '生活中，总有一些小确幸，让我们感到温暖和幸福。也许是一杯温暖的咖啡，也许是一句贴心的问候，也许是一个美丽的日落。\n\n这些小确幸，虽然微不足道，却能让我们的生活变得更加美好。它们像阳光一样，照亮我们的生活，让我们感到温暖和希望。\n\n所以，让我们珍惜生活中的每一个小确幸，让它们成为我们前进的动力，让我们的生活变得更加美好。',
        createTime: '2023-08-21 09:15:00',
        views: 78
    }
];

router.get('/', async (ctx, next) => {
	try {
		var db = ctx.db;
		var sqlSelect = "select * from blog";
		var result = await db.query(sqlSelect, []);
		await ctx.render('index', {
			chapterList: result
		})
	} catch (error) {
		console.log('数据库连接失败，使用模拟数据:', error.message);
		// 使用模拟数据
		await ctx.render('index', {
			chapterList: mockBlogData
		})
	}
})

router.get('/string', async (ctx, next) => {
	ctx.body = 'koa2 string'
})

router.get('/json', async (ctx, next) => {
	ctx.body = {
		title: 'koa2 json'
	}
})

router.get("/getlist", async (ctx, next) => {
	try {
		var db = ctx.db;
		var sqlSelect = "select * from blog";
		var result = await db.query(sqlSelect, []);
		console.log(result);
		ctx.body = result;
	} catch (error) {
		console.log('数据库连接失败，使用模拟数据:', error.message);
		// 使用模拟数据
		ctx.body = mockBlogData;
	}
})

router.get("/detail/:id", async (ctx, next) => {
	var blogId = parseInt(ctx.params.id);
	
	try {
		var db = ctx.db;
		
		// 增加浏览次数
		var sqlUpdateViews = "UPDATE blog SET views = views + 1 WHERE blogId=?";
		await db.query(sqlUpdateViews, [blogId]);
		
		// 查询文章详情
		var sqlSelect = "select * from blog where blogId=?";
		var result = await db.query(sqlSelect, [blogId]);
		
		await ctx.render('detail', {
			chapter: result
		})
	} catch (error) {
		console.log('数据库连接失败，使用模拟数据:', error.message);
		// 使用模拟数据
		const mockDetail = mockBlogData.find(blog => blog.blogId === blogId);
		// 模拟增加浏览次数
		if (mockDetail) {
			mockDetail.views++;
			await ctx.render('detail', {
				chapter: [mockDetail]
			})
		} else {
			ctx.status = 404;
			await ctx.render('error', { message: '文章不存在' });
		}
	}
})


router.get("/login", async (ctx, next) => {
	await ctx.render("login");
})
const fs = require("fs");
const path = require("path");
router.post("/login", async (ctx, next) => {
	var fileList = ctx.request.files;
	for(var i in fileList) {
		var filePath = fileList[i].path;
		var fileName = fileList[i]["name"];
		var readStream = fs.createReadStream(filePath);
		console.log(process.cwd());
		var writeStream = fs.createWriteStream(path.join(process.cwd(), 'public/upload/') + fileName);
		readStream.pipe(writeStream);
	}
})
module.exports = router
